

// Redux
// 阉割版

// 创建store

/* 
//定义reducer初始值
let init = {

}

创建reducers
export default function xx (prestate,act){

  return  prestate

}

在store引入 reducer

暴漏 store

在组件中引入 store

在组件中 yong getstate 取值

在事件函数中     store.dispatch({
      type: "increamentCount",
      data: 1
    })
    给reducers 传递值 
{
      type: "increamentCount",
      data: 1
    }
在reducers中   const {
    type,
    data
  } = action;
  可以用action接受值
  使用   switch (type) {
    case "increamentCount":
      return {
        ...init, count: prevStata.count + data
      };
  判断type类型 返回一个对象
  改变了 store 并不会渲染
  store.subscribe(()=>{
  root.render(<App />);
})

actions文件夹
分离action
变成函数

constant文件夹
//分离type
变成常量

修改action 异步请求
无法在异步中 return 一个对象
用可以return 函数
为一个函数
使用中间件
在store 上
引入中间件 
当我们进行异步action action是一个函数


合并reducers

发请求






----------------

下载BroserRouter
BroserRouter包裹APP
开始写路由配置
Routes
Route
path
element
放二级路由
Outlet
在这里放不方便
提取路由表
routes 是一个数组
交给 useRoutes(routes)
也可以封装一个组件 或者 一个自定义hooks

路由传参
uselocation（） 传
useNavigate() 接

//路由懒加载 组件的延迟加载
lazy函数 参数2 回调函数 返回 import（"XXX/XXX"） Promise
<Suspense />


redux使用
核心（共享状态）
action store reducers
1创建store 指定reducer

dispatch（） 修改
subscribe（） 刷新渲染

异步action

合并reducers

---------
react - redux
专门用来简化react应用 中 用 redux








*/